<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  <title>【学习记录】【Python】【numpy】自学numpy库的简要记录帖（已经腰斩换新的）.md | 蓝湖畔淅淅沥沥的雨</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="说明 - 2022-05-05 本篇博客为本人原创, 原发布于CSDN, 在搭建个人博客后使用爬虫批量爬取并挂到个人博客, 出于一些技术原因博客未能完全还原到初始版本(而且我懒得修改), 在观看体验上会有一些瑕疵 ,若有需求会发布重制版总结性新博客。发布时间统一定为1111年11月11日。钦此。  1.极其基础的操作 ​ import numpy as np #创建一个数组 数组的类型为nump">
<meta property="og:type" content="article">
<meta property="og:title" content="【学习记录】【Python】【numpy】自学numpy库的简要记录帖（已经腰斩换新的）.md">
<meta property="og:url" content="http://example.com/1111/11/11/%E3%80%90%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95%E3%80%91%E3%80%90Python%E3%80%91%E3%80%90numpy%E3%80%91%E8%87%AA%E5%AD%A6numpy%E5%BA%93%E7%9A%84%E7%AE%80%E8%A6%81%E8%AE%B0%E5%BD%95%E5%B8%96%EF%BC%88%E5%B7%B2%E7%BB%8F%E8%85%B0%E6%96%A9%E6%8D%A2%E6%96%B0%E7%9A%84%EF%BC%89/index.html">
<meta property="og:site_name" content="蓝湖畔淅淅沥沥的雨">
<meta property="og:description" content="说明 - 2022-05-05 本篇博客为本人原创, 原发布于CSDN, 在搭建个人博客后使用爬虫批量爬取并挂到个人博客, 出于一些技术原因博客未能完全还原到初始版本(而且我懒得修改), 在观看体验上会有一些瑕疵 ,若有需求会发布重制版总结性新博客。发布时间统一定为1111年11月11日。钦此。  1.极其基础的操作 ​ import numpy as np #创建一个数组 数组的类型为nump">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="1111-11-11T03:06:11.000Z">
<meta property="article:modified_time" content="2022-05-06T08:12:47.676Z">
<meta property="article:author" content="StarsWhisper">
<meta property="article:tag" content="OldBlog(Before20220505)">
<meta property="article:tag" content="python库">
<meta name="twitter:card" content="summary">
  
    <link rel="alternate" href="/atom.xml" title="蓝湖畔淅淅沥沥的雨" type="application/atom+xml">
  
  
    <link rel="icon" href="/favicon.png">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  
<link rel="stylesheet" href="/css/style.css">

  
<link rel="stylesheet" href="/plugin/bganimation/bg.css">

  

  <link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css" rel="stylesheet" type="text/css">
<meta name="generator" content="Hexo 6.1.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <div class="outer">
        <div class="widget-wrap mobile-header">
  <h3 class="widget-title"></h3>
  <div class="widget">
    <img class="avatar" src="/images/avatar.png">
    <h2 class="author">StarsWhisper</h2>
    <h3 class="description"></h3>
    <div class="count-box">
      <a href="/archives"><div><strong>75</strong><br>文章</div></a>
      <a href="/categories"><div><strong>31</strong><br>分类</div></a>
      <a href="/tags"><div><strong>56</strong><br>标签</div></a>
    </div>
    <ul class="blog-link">
     
          <a href="/" title="Home">
            <li>主页</li>
          </a>
        
          <a href="/archives" title="Archives">
            <li>归档</li>
          </a>
        
          <a href="/categories" title="Categories">
            <li>分类</li>
          </a>
        
          <a href="/tags" title="Tags">
            <li>标签</li>
          </a>
        
          <a href="/knightabout" title="Knightabout">
            <li>关于</li>
          </a>
        
          <a href="/bridges" title="Bridges">
            <li>传送门</li>
          </a>
        
          <a href="/announcement" title="Announcement">
            <li>公告</li>
          </a>
        
    </ul>
  </div>
</div>

        <section id="main"><article id="post-【学习记录】【Python】【numpy】自学numpy库的简要记录帖（已经腰斩换新的）" class="wow slideInRight article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="/1111/11/11/%E3%80%90%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95%E3%80%91%E3%80%90Python%E3%80%91%E3%80%90numpy%E3%80%91%E8%87%AA%E5%AD%A6numpy%E5%BA%93%E7%9A%84%E7%AE%80%E8%A6%81%E8%AE%B0%E5%BD%95%E5%B8%96%EF%BC%88%E5%B7%B2%E7%BB%8F%E8%85%B0%E6%96%A9%E6%8D%A2%E6%96%B0%E7%9A%84%EF%BC%89/" class="article-date">
  <time class="post-time" datetime="1111-11-11T03:06:11.000Z" itemprop="datePublished">
    <span class="post-month">11月</span><br/>
    <span class="post-day">11</span>
  </time>
</a>
   
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      【学习记录】【Python】【numpy】自学numpy库的简要记录帖（已经腰斩换新的）.md
    </h1>
  

        <div>
          
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/">基础知识</a>,<a class="article-category-link" href="/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/python/">python</a>,<a class="article-category-link" href="/categories/%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86/python/numpy/">numpy</a>
  </div>

          
              

          
        </div>
      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <h2 id="说明-2022-05-05"><a class="markdownIt-Anchor" href="#说明-2022-05-05"></a> 说明 - 2022-05-05</h2>
<p>本篇博客为本人原创, 原发布于CSDN, 在搭建个人博客后使用爬虫批量爬取并挂到个人博客, 出于一些技术原因博客未能完全还原到初始版本(而且我懒得修改), 在观看体验上会有一些瑕疵 ,若有需求会发布重制版总结性新博客。发布时间统一定为1111年11月11日。钦此。</p>
<h2 id="1极其基础的操作"><a class="markdownIt-Anchor" href="#1极其基础的操作"></a> 1.极其基础的操作</h2>
<p>​<br />
import numpy as np</p>
<pre><code>#创建一个数组 数组的类型为numpy.ndarray,其中数据的类型为numpy.int32s
array1=np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]]],dtype=np.int32)
print(array1,'\ntype of array1 is:',type(array1))

#查看数组维数
print('dimensions of array1:',array1.ndim)

#查看数组形状
print('shape of array1:',array1.shape)

#改变数组形状
array2=array1.reshape(6,3)
print(array2)

#提取数据(array2是二维数组)
print(array2[1:4,0:2])          #2、3、4行前两列
print(array2[1:4][0:2])         #两次切片  [1:4]切完后再[0:2]
print(array2[:,2])              #第三列
print(array2[:4])               #前四行
print(array2[:4,:])             #前四行

#数组的大小
print('size of array1 and array2:',array1.size,array2.size)

#矩阵计算
print(array1+array2.reshape(2,3,3))     #矩阵相加
print(array1*array2.reshape(2,3,3))     #矩阵相乘
print(array1+2)                         #矩阵元素+2
</code></pre>
<h2 id="2索引"><a class="markdownIt-Anchor" href="#2索引"></a> 2.索引</h2>
<p>​<br />
import numpy as np</p>
<pre><code>array1=np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]]],dtype=np.int32)
</code></pre>
<p>​<br />
#取元素   第一维的一、二项，第二维的第一项，第三维的一、三项<br />
array2=array1[np.ix_([0,1],[0],[0,2])]<br />
print(array2)</p>
<pre><code>#取 array1[0,0,0],以及 array1[1,2,1](最终取出两个数，1和17:[1,17])
array3=array1[[0,1],[0,2],[0,1]]
print(array3)

#顺序变的
array4=array1.reshape(6,3)[[0,5,3,1]]
print(array4)

#bool索引
array3=np.array(range(100))     #建立一个0-99的一维数组
print(array3)

array3Bool=array3%3==0          #意会
print(array3Bool)

array3Final=array3[array3Bool]          #得到array3中是3的倍数的项
print(array3Final)
array3Final_another=array3[array3%3==0] #得到array3中是3的倍数的项
print(array3Final_another)
</code></pre>
<p>​</p>
<h2 id="3简单文件储存"><a class="markdownIt-Anchor" href="#3简单文件储存"></a> 3.简单文件储存</h2>
<p>​<br />
import numpy as np</p>
<pre><code>#txt
x=np.genfromtxt('abc.txt',delimiter='&amp;&amp;',dtype=np.str,usecols=1)        #载入文件
print(x)
#delimiter 分割值
#dtype 数据类型
#usecols 不太清楚

y=np.loadtxt('abc.txt',delimiter='&amp;&amp;',dtype=np.str,usecols=1)           #载入文件
print(y)

np.savetxt('bca.txt',y,fmt='%s')
</code></pre>
<p>​<br />
print(‘分割线-----------------------’)<br />
#二进制</p>
<pre><code>np.save('b_bca.npyy',y)                     #使用此方法保存的后缀名文件总为npy:  b_bca.npyy.npy

np.savez('b_z_bca.npz',the_x=x,the_y=y)     #此方法可以保存多个数组，后缀名为npz  the_x等形参名对应导入后的操作的键名

tmp_a=np.load('b_bca.npy')
print(tmp_a)

tmp_b=np.load('b_z_bca.npz')
print(tmp_b)
print(tmp_b['the_x'])                   #类似字典，key值为先前保存时的形参名，如the_x
print(tmp_b['the_y'])
</code></pre>
<h2 id="4简单练习-矩阵的合并与转置"><a class="markdownIt-Anchor" href="#4简单练习-矩阵的合并与转置"></a> 4.简单练习 &amp;&amp; 矩阵的合并与转置</h2>
<p>​<br />
import numpy as np</p>
<pre><code>np.set_printoptions(precision=1,threshold=3000,suppress=True)
#precision控制小数点位数
#threshold控制输出值的个数，其他的以...代替(查的资料上这么说的，实际没看出效果)
#suppress=True 取消使用科学计数法
</code></pre>
<p>​<br />
array1=np.genfromtxt(r’D:\0我的下载\上证指数\上证指数副本.txt’,usecols=(0,4,6),)<br />
print(array1)</p>
<pre><code>daySpan=(array1[:,0]&gt;=20180901)&amp;(array1[:,0]&lt;20190101)  #筛选出其中2018年9月1日至2019年1月1日的信息
array2=array1[daySpan]                                  #筛选出其中2018年9月1日至2019年1月1日的信息
print(array2)

#纵向合并
#把array1第三列大于0的设为1，不大于0的设为-1，添加至数组最右边
tmp=array1[:,2].copy()
tmp[tmp&gt;0]=1
tmp[tmp&lt;=0]=-1
array_new=np.c_[array1,tmp]#等同于array_new=np.column_stack((array1,tmp))
print(array_new)

#横向合并
arr1=np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2=np.array([['x','x','x']])

arr_new=np.r_[arr1,arr2]#等同于arr_new=np.row_stack((arr1,arr2))
print(arr_new)

#一维数组默认时列向量，要转化为行向量才能横向合并
#eg:[1,2,3]这是一个列向量 (3,)
#eg:[[1,2,3]]这时一个行向量(1,3)
</code></pre>
<p>​<br />
​<br />
#矩阵的转置<br />
print(arr_new.T)</p>
<h2 id="5矩阵的切割"><a class="markdownIt-Anchor" href="#5矩阵的切割"></a> 5.矩阵的切割</h2>
<p>​<br />
import numpy as np</p>
<pre><code>#新建0-15的数组
array1=np.arange(16).reshape(4,4)
print(array1)
</code></pre>
<p>​<br />
#用hsplit(ary,indices_or_sections)拆分   (相当于split的axis参数=1)<br />
#纵向拆分<br />
#第二个参数：如果时整数x，则把数组平均分成x份，不能平均分会报错<br />
#第二个参数，如果时列表，会以列表中的值为轴拆分<br />
h_arr1=np.hsplit(array1,4)<br />
print(h_arr1)<br />
h_arr2=np.hsplit(array1,[1,3])<br />
print(h_arr2)</p>
<p>​<br />
#用split(ary, indices_or_sections, axis=0)拆分<br />
#用法基本同hsplit一样，只不过hsplit只能纵向拆分，split可以定义拆分维度<br />
#axis=0第一维，即横向拆分，axis=1第二维，即纵向拆分<br />
arr1=np.split(array1,4,0)<br />
print(arr1)<br />
arr2=np.split(array1,[1,3],0)<br />
print(arr2)</p>
<p>​</p>
<h2 id="6图像通道的分离与合成"><a class="markdownIt-Anchor" href="#6图像通道的分离与合成"></a> 6.图像通道的分离与合成</h2>
<p><strong>分离：</strong><br />
img1B,img1G,img1R=np.dsplit(img1,3)<br />
img1B,img1G,img1R=cv2.split(img1)都可以<br />
<strong>合成：</strong><br />
cv2.merge([b,g,r])<br />
cv2.merge([zeros, zeros, img1R])</p>
<p><strong>注意倒数第五句的注释</strong></p>
<p>​<br />
import cv2<br />
import numpy as np</p>
<pre><code>def showone(img):
    cv2.imshow('show image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
def showone_color(img,color):
    zeros=np.zeros(img.shape[:2],dtype='uint8') #记得调整格式
    if color == 'B':
        cv2.imshow('blue',cv2.merge([img1B,zeros,zeros]))
    elif color == 'G':
        cv2.imshow('green', cv2.merge([zeros, img1G, zeros]))
    elif color == 'R':
        cv2.imshow('red', cv2.merge([zeros, zeros, img1R]))
    cv2.waitKey(0)
    cv2.destroyAllWindows()
def showone_merge(b,g,r):
    cv2.imshow('merge',cv2.merge([b,g,r]))
    cv2.waitKey(0)
    cv2.destroyAllWindows()
</code></pre>
<p>​<br />
img1=cv2.imread(‘theimg.png’,1)</p>
<pre><code>img1B,img1G,img1R=np.dsplit(img1,3)
#img1B,img1G,img1R=cv2.split(img1)

print(img1B.dtype)          #矩阵元素的格式为uint8
</code></pre>
<p>​<br />
​<br />
showone(img1B)      #这里图像为灰色，原因是当调用cv2.imshow的时候G、R两个通道被默认设为了与B通道一样，三通道一样时显示灰度图</p>
<p>​<br />
showone_color(img1B,‘B’)<br />
showone_color(img1G,‘G’)<br />
showone_color(img1R,‘R’)</p>
<pre><code>showone_merge(img1B,img1G,img1R)        #合成后是原图
</code></pre>
<p>​</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="http://example.com/1111/11/11/%E3%80%90%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95%E3%80%91%E3%80%90Python%E3%80%91%E3%80%90numpy%E3%80%91%E8%87%AA%E5%AD%A6numpy%E5%BA%93%E7%9A%84%E7%AE%80%E8%A6%81%E8%AE%B0%E5%BD%95%E5%B8%96%EF%BC%88%E5%B7%B2%E7%BB%8F%E8%85%B0%E6%96%A9%E6%8D%A2%E6%96%B0%E7%9A%84%EF%BC%89/" data-id="cl2uhoecb001te4j3c6hi9sb5" class="article-share-link">分享</a>
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/OldBlog-Before20220505/" rel="tag">OldBlog(Before20220505)</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/python%E5%BA%93/" rel="tag">python库</a></li></ul>

    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/1111/11/11/%E3%80%90%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95%E3%80%91python%20matplotlib%20%E8%87%AA%E5%AD%A6%E5%85%A5%E9%97%A8%EF%BC%88%E9%9A%8F%E7%BC%98%E6%9B%B4%E6%96%B0%EF%BC%89/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">上一篇</strong>
      <div class="article-nav-title">
        
          【学习记录】python matplotlib 自学入门（随缘更新）.md
        
      </div>
    </a>
  
  
    <a href="/1111/11/11/%E3%80%90%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95%E3%80%91%E3%80%90Python%E3%80%91%E3%80%90cv2%E3%80%91%E8%87%AA%E5%AD%A6cv2%20%E7%9A%84%E7%AE%80%E5%8D%95%E8%AE%B0%E5%BD%95%EF%BC%88%E5%B7%B2%E7%BB%8F%E8%85%B0%E6%96%A9%E6%8D%A2%E6%96%B0%E7%9A%84%EF%BC%89/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">下一篇</strong>
      <div class="article-nav-title">【学习记录】【Python】【cv2】自学cv2 的简单记录（已经腰斩换新的）.md</div>
    </a>
  
</nav>

  
</article>



</section>
        
          <aside id="sidebar">
  
    <div class="widget-wrap">
  <h3 class="widget-title"></h3>
  <div class="widget">
    <h1 class="blog-title">蓝湖畔淅淅沥沥的雨</h1>
    <h2 class="blog-subtitle">All tragedy erased, I see only wonders...</h2>
    <ul class="blog-link">
     
          <a href="/" title="Home">
            <li>主页</li>
          </a>
        
          <a href="/archives" title="Archives">
            <li>归档</li>
          </a>
        
          <a href="/categories" title="Categories">
            <li>分类</li>
          </a>
        
          <a href="/tags" title="Tags">
            <li>标签</li>
          </a>
        
          <a href="/knightabout" title="Knightabout">
            <li>关于</li>
          </a>
        
          <a href="/bridges" title="Bridges">
            <li>传送门</li>
          </a>
        
          <a href="/announcement" title="Announcement">
            <li>公告</li>
          </a>
        
    </ul>
  </div>
</div>

  
    <div class="widget-wrap">
  <h3 class="widget-title"></h3>
  <div class="widget">
    <img class="avatar" src="/images/avatar.png">
    <h2 class="author">StarsWhisper</h2>
    <h3 class="description"></h3>
    <div class="count-box">
      <a href="/archives"><div><strong>75</strong><br>文章</div></a>
      <a href="/categories"><div><strong>31</strong><br>分类</div></a>
      <a href="/tags"><div><strong>56</strong><br>标签</div></a>
    </div>



    <div class="social-link">
      
        <a class="hvr-bounce-in" href="https://github.com/Wldcmzy" target="_blank" title="Github">
          Github
        </a>
      
        <a class="hvr-bounce-in" href="https://blog.csdn.net/wldcmzy" target="_blank" title="CSDN">
          CSDN
        </a>
      
        <a class="hvr-bounce-in" href="https://space.bilibili.com/83743701" target="_blank" title="bilibili(无技术和学习内容)">
          bilibili(无技术和学习内容)
        </a>
      
    </div>

    <div class="friend-link">
      <h2>友情链接</h2>
      
        <a class="hvr-bounce-in" href="https://shanamaid.github.io/" target="_blank" title="夏娜主题作者的博客">
          夏娜主题作者的博客
        </a>
      
    </div>
  </div>
</div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy;2021 - 2022 StarsWhisper<br>
      由<a href="http://hexo.io/" target="_blank">Hexo</a>强力驱动 | 
      主题-<a target="_blank" rel="noopener" href="https://github.com/ShanaMaid/hexo-theme-shana">Shana</a>(但是魔改)
      
    </div>
    
  </div>
</footer>
    </div>
    

<script src="//apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="//apps.bdimg.com/libs/wow/0.1.6/wow.min.js"></script>
<script>
new WOW().init();
</script>   


  
<link rel="stylesheet" href="/plugin/fancybox/jquery.fancybox.css">

  
<script src="/plugin/fancybox/jquery.fancybox.pack.js"></script>




  
<link rel="stylesheet" href="/plugin/galmenu/GalMenu.css">

  
<script src="/plugin/galmenu/GalMenu.js"></script>

  <div class="GalMenu GalDropDown">
      <div class="circle" id="gal">
        <div class="ring">
          
            <a href="/announcement" title="" class="menuItem">公告</a>
          
            <a href="/tags" title="" class="menuItem">标签</a>
          
            <a href="/categories" title="" class="menuItem">分类</a>
          
            <a href="/archives" title="" class="menuItem">归档</a>
          
            <a href="/knightabout" title="" class="menuItem">关于</a>
          
            <a href="/bridges" title="" class="menuItem">传送门</a>
          
        </div>
        
          <audio id="audio" src="#"></audio>
        
      </div> 
</div>
<div id="overlay" style="opacity: 1; cursor: pointer;"></div>
  <script type="text/javascript">var items = document.querySelectorAll('.menuItem');
    for (var i = 0,
    l = items.length; i < l; i++) {
      items[i].style.left = (50 - 35 * Math.cos( - 0.5 * Math.PI - 2 * (1 / l) * i * Math.PI)).toFixed(4) + "%";
      items[i].style.top = (50 + 35 * Math.sin( - 0.5 * Math.PI - 2 * (1 / l) * i * Math.PI)).toFixed(4) + "%"
    }</script>
<script type="text/javascript">
  $(document).ready(function() {
    $('body').GalMenu({
      'menu': 'GalDropDown'
    })
  });
</script>

  <section class="hidden-xs"> 
  <ul class="cb-slideshow"> 
    <li><span>苟利</span></li> 
    <li><span>国家</span></li> 
    <li><span>生死以</span></li> 
    <li><span>岂能</span></li> 
    <li><span>祸福</span></li> 
    <li><span>趋避之</span></li> 
  </ul>
</section>

<script src="/js/script.js"></script>




  </div>
</body>
</html>